package plp.prolog.declaration;

import java.util.ArrayList;

import plp.prolog.memory.AmbienteExecucaoProlog;

public abstract class ExpressaoComposta implements Expressao{

	protected ArrayList<Expressao> listaExpressao;
	
	public ExpressaoComposta(ArrayList<Expressao> listaExpressao) {
		this.listaExpressao = listaExpressao;
	}

	protected boolean algumaRelacaoCasaComExpressao(AmbienteExecucaoProlog ambienteExecucao, Expressao e){
		ArrayList<Relacao> relacoes = ambienteExecucao.getListaRelacoes();
		
		for(int index = 0; index < relacoes.size(); index++){
			Relacao relacaoDerivada = relacoes.get(index);
		
			if( e.avaliar(ambienteExecucao, relacaoDerivada ) )
				return true;
			
		}
		
		return false;
	}
}
